<script>
  //Object.defineProperty代理
  let obj1 = {
    name: "张三"
  }
  Object.defineProperty(obj2, "name", {
    get() {
      return obj1.name
    },
    set(val) {
      obj1.name = val
    }
  })


  //Proxy代理
  let obj1 = {
    name: "张三"
  }
  let obj2 = new Proxy(obj1, {
    get(target, prop) {
      return target[prop]
    },
    set(target, prop, val) {
      target[prop] = val

    }

  })
  obj2.address = "上海"
  console.log(obj1)


  // Object.defineProperty(obj2, "name", {
  //   get() {
  //     return obj1.name
  //   },
  //   set(val) {
  //     obj1.name = val
  //   }
  // })

  // obj2.address = "北京"
  // console.log(obj1)

  // console.log(obj2.name)
  // obj2.name="李四"
  // console.log("obj1",obj1)
  // console.log("obj2",obj2)



  // Object.defineProperty(obj1, "address", {
  //   value:"上海",
  //   writable:false,
  //   configurable:true,
  //   enumerable:false
  // })
  // obj1.address="上海"
  // console.log(obj1)
  // console.log(obj1)
  // Object.defineProperty(obj2, "name", {
  //   get() {
  //     return obj1.name
  //   },
  //   set(val) {
  //     obj1.name = val
  //   },
  //   // writable: true,
  //   enumerable: true,
  //   configurable: true,

  // })

  // obj2.name="李四"


</script>